const { Model, DataTypes } = require('sequelize')

class UserSessions extends Model {
  static init(sequelize) {
    super.init(
      {
        id: {
          type: DataTypes.INTEGER,
          primaryKey: true,
          autoIncrement: true,
          comment: '主键，自增',
        },
        userId: {
          type: DataTypes.INTEGER,
          allowNull: false,
          comment: '用户ID，关联Users表的id字段',
        },
        canvaszw: {
          type: DataTypes.STRING(255),
          comment: 'Canvas指纹',
        },
        token: {
          type: DataTypes.STRING(255),
          allowNull: false,
          comment: 'JWT登录凭证',
        },
        expiresAt: {
          type: DataTypes.DATE, // 使用 DATE 类型（兼容 TIMESTAMP）
          allowNull: true, // 允许为空
          comment: '会话过期时间',
        },
        createdAt: {
          type: DataTypes.DATE,
          allowNull: false,
          comment: '创建时间',
        },
        updatedAt: {
          type: DataTypes.DATE,
          allowNull: false,
          comment: '更新时间',
        },
      },
      {
        sequelize,
        modelName: 'UserSessions',
        tableName: 'user_sessions',
        timestamps: false, // 禁止自动管理 createdAt 和 updatedAt
        comment: '用户会话表',
      }
    )
  }

  static associate(models) {
    // 定义与 Users 表的关联关系
    this.belongsTo(models.Users, {
      foreignKey: 'userId', // 外键字段
      targetKey: 'id', // 关联 Users 表的 id 字段
      as: 'user', // 关联别名
    })
  }
}

module.exports = UserSessions